package A.动态数组;
/**
 * 双重遍历时 每一个x之前的就不需要再便利了
 *
 */

import com.sun.org.apache.bcel.internal.generic.NEW;

import java.util.HashMap;
import java.util.Map;

public class _1_两数之和 {

    /**
     * 解决方法1---暴力法 运行超时
     * @param nums
     * @param target
     * @return
     */
    public int[] twoSum(int[] nums, int target) {

        for (int i=0;i< nums.length;i++){
            for (int j=i+1;j< nums.length;j++){
                    if (nums[i] +nums[j] == target){
                        return  new int[]{i,j};
                    }

            }

        }
        return new int[0];

    }

    /**
     * 题解思路--利用hashmap 因为key不可以重复 所以刚好对应不可重复的遍历相加情况
     * 想要找的值 target-x 对于x 先判断hashmap有没有这个数值 如果没有就插入hashmap
     */
    public int[] twoSum1(int[] nums, int target) {

        Map<Integer,Integer> hashmap = new HashMap<>();
        for (int i=0;i< nums.length;i++){
            if (hashmap.containsKey(target-nums[i])){
                return new int[]{hashmap.get(target-nums[i]),i};//这个contain相当于从最开始遍历的 所以序号应该在前面

            }
            hashmap.put(nums[i],i);
        }
        return new int[0];


    }
}
